iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0
自我挑戰組

大學 50 萬貸款的交代系列 第 24

Day 24 吃餅乾囉 ヽ(✿゚▽゚)ノ

  • 分享至 

  • xImage
  •  

Cookie 是網頁中很常用到的東西,網頁連線中 Client 與 Server 不會持續性的連線,網頁資料傳輸完畢後,連線就斷了。因此,如果在這個網頁中向伺服器請求另一個網頁資料,對於伺服器來說,等於是一個新的用戶來請求資料。

舉個例子,我想先滑一下 IG 然後在 IG 上發限時動態。

  1. IG 要求登入
  2. 登入後,瀏覽
  3. 發限時動態
  4. IG 要求登入
  5. 登入後,編輯圖片
  6. 發布限時動態
  7. IG 要求登入

這樣的流程是在沒有 Cookie 的狀態下,可能的使用者操作。因為所有的操作都等於心使用者的操作,所以前一次的登入結果不會帶到下一次的頁面中。

所以要來說說開發網頁最好的夥伴 Cookie。Cookie 可以想成是一個 .txt 檔,它用純文字記錄了一些資料,例如:購物車內容、登入狀態、瀏覽項目...之類的。

如何在 PHP 使用 Cookie

要製作餅乾要先知道三個必要的東西:

  1. 餅乾的 Key (餅乾的名稱)
  2. 餅乾的 Value (Key 連結到的值)
  3. 餅乾賞味期限

沒錯,就算是虛擬的餅乾,還是有保存期限的。如果保存期限過了,則該 Cookie 等於失效。對了,Cookie 的賞味期限是用秒來算的哦(ゝ∀・)

根據上面這三個東西我們可以試著寫一個 php

<?php
$cookieName = 'number';

if(!isset($_COOKIE[$cookieName])) {    //判斷 COOKIE 是否存在
    setcookie($cookieName, 0, time() + 100);  //設定 COOKIE,保存期限為 100 秒
} else {
    setcookie($cookieName, $_COOKIE[$cookieName]+1, time() + 100);    //更改 COOKIE 值
    
}
echo  '現在數到 '.$_COOKIE[$cookieName];
?>

<form action="test.php" method="post">
	<input type="submit" name="submit" value="+1">
</form>

結果會像這樣,只要一直按+,數值就會一直增加。可以試著拿掉 Cookie ,會發現永遠只會數到 1 喔。

不過 Cookie 也是有缺點的

  • Cookie 放在使用者端,所以使用者可以更改內容再與伺服器連線。
  • 如果電腦被駭,Cookie 會變成很大的目標,因為帳號密碼多少跟 Cookie 有關。
  • 商人會用 Cookie 賺更多錢。

第一點來做點示範好了,用上面那段程式碼當例子

史蒂夫和戴夫的老師要他們在一天內把數字點到一萬。
史蒂夫回家馬上開始點,戴夫則是在研究今天的晚餐要吃什麼。
史蒂夫點到 2000 正在懷疑人生,戴夫點下 F12 並修改 Cookie 到一萬

史蒂夫正在做 SAN 值檢定,戴夫在點一下 +1 完成作業後,去看貓咪影片

第三點我想用一篇文章來介紹一下商人如何優雅地吃人肉,應該會是 Day 26 的文章,比較偏向經濟學方面了,這就是斜槓嗎

既然 Cookie 會被竄改,當然也有解決的方法囉。不過就留到 Day 25 了。


上一篇
Day 23 怕啦.Command Injection Σ( ° △ °)
下一篇
Day 25 吃餅乾囉 -2ヽ(✿゚▽゚)ノ
系列文
大學 50 萬貸款的交代30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言